[INFO] cloning repository https://github.com/fuqiuluo/qqbot.rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/fuqiuluo/qqbot.rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffuqiuluo%2Fqqbot.rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffuqiuluo%2Fqqbot.rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] cdceae9c7183e13658d0d7a56134b33920bd8d2e
[INFO] fixing fuqiuluo/qqbot.rs against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=start=2015 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffuqiuluo%2Fqqbot.rs" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/fuqiuluo/qqbot.rs
[INFO] finished tweaking git repo https://github.com/fuqiuluo/qqbot.rs
[INFO] tweaked toml for git repo https://github.com/fuqiuluo/qqbot.rs written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/fuqiuluo/qqbot.rs on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/fuqiuluo/qqbot.rs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded serde_with_macros v3.7.0
[INFO] [stderr]   Downloaded deflate64 v0.1.8
[INFO] [stderr]   Downloaded rand_chacha v0.9.0-alpha.1
[INFO] [stderr]   Downloaded lockfree-object-pool v0.1.6
[INFO] [stderr]   Downloaded rand_core v0.9.0-alpha.1
[INFO] [stderr]   Downloaded generic-array v1.0.0
[INFO] [stderr]   Downloaded cool_asserts v2.0.3
[INFO] [stderr]   Downloaded whoami v1.5.1
[INFO] [stderr]   Downloaded winreg v0.52.0
[INFO] [stderr]   Downloaded tokio-socks v0.5.1
[INFO] [stderr]   Downloaded cc v1.0.91
[INFO] [stderr]   Downloaded getrandom v0.2.13
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.0-alpha.6
[INFO] [stderr]   Downloaded unicode-properties v0.1.1
[INFO] [stderr]   Downloaded quinn-udp v0.5.2
[INFO] [stderr]   Downloaded jcers v0.1.2
[INFO] [stderr]   Downloaded jcers_proc v0.1.0
[INFO] [stderr]   Downloaded zopfli v0.8.1
[INFO] [stderr]   Downloaded ravif v0.11.7
[INFO] [stderr]   Downloaded prost-build v0.12.4
[INFO] [stderr]   Downloaded rand v0.9.0-alpha.1
[INFO] [stderr]   Downloaded zip v2.1.1
[INFO] [stderr]   Downloaded prettyplease v0.2.17
[INFO] [stderr]   Downloaded quinn v0.11.2
[INFO] [stderr]   Downloaded zerocopy v0.8.0-alpha.6
[INFO] [stderr]   Downloaded bitstream-io v2.4.2
[INFO] [stderr]   Downloaded pretty_env_logger v0.5.0
[INFO] [stderr]   Downloaded async-compression v0.4.8
[INFO] [stderr]   Downloaded serde_toml v0.0.1
[INFO] [stderr]   Downloaded reqwest v0.12.5
[INFO] [stderr]   Downloaded h2 v0.4.4
[INFO] [stderr]   Downloaded toml_edit v0.22.9
[INFO] [stderr]   Downloaded bincode_derive v2.0.0-rc.3
[INFO] [stderr]   Downloaded quinn-proto v0.11.3
[INFO] [stderr]   Downloaded virtue v0.0.13
[INFO] [stderr]   Downloaded bincode v2.0.0-rc.3
[INFO] [stderr]   Downloaded rustls v0.23.10
[INFO] [stderr]   Downloaded actix-web v4.7.0
[INFO] [stderr]   Downloaded actix-http v3.7.0
[INFO] [stderr]   Downloaded libz-ng-sys v1.1.15
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] a8ad28ebb124a76c54607c55fb7dff87ae5625005a876d17f10ffe9eb22e0b6d
[INFO] running `Command { std: "docker" "start" "a8ad28ebb124a76c54607c55fb7dff87ae5625005a876d17f10ffe9eb22e0b6d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a8ad28ebb124a76c54607c55fb7dff87ae5625005a876d17f10ffe9eb22e0b6d" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a8ad28ebb124a76c54607c55fb7dff87ae5625005a876d17f10ffe9eb22e0b6d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a8ad28ebb124a76c54607c55fb7dff87ae5625005a876d17f10ffe9eb22e0b6d" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=start=2015", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.81
[INFO] [stderr]    Compiling libc v0.2.153
[INFO] [stderr]     Checking log v0.4.21
[INFO] [stderr]     Checking getrandom v0.2.13
[INFO] [stderr]    Compiling ahash v0.8.11
[INFO] [stderr]     Checking smallvec v1.13.2
[INFO] [stderr]    Compiling serde v1.0.197
[INFO] [stderr]     Checking futures-core v0.3.30
[INFO] [stderr]     Checking signal-hook-registry v1.4.1
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]    Compiling bytes v1.6.0
[INFO] [stderr]     Checking futures-sink v0.3.30
[INFO] [stderr]    Compiling typenum v1.17.0
[INFO] [stderr]     Checking zerocopy v0.7.34
[INFO] [stderr]     Checking parking_lot_core v0.9.9
[INFO] [stderr]    Compiling pin-project-lite v0.2.14
[INFO] [stderr]    Compiling thiserror v1.0.58
[INFO] [stderr]     Checking parking_lot v0.12.1
[INFO] [stderr]     Checking futures-channel v0.3.30
[INFO] [stderr]    Compiling quote v1.0.36
[INFO] [stderr]    Compiling jobserver v0.1.28
[INFO] [stderr]     Checking futures-io v0.3.30
[INFO] [stderr]     Checking allocator-api2 v0.2.18
[INFO] [stderr]    Compiling syn v2.0.60
[INFO] [stderr]    Compiling num-traits v0.2.18
[INFO] [stderr]    Compiling cc v1.0.91
[INFO] [stderr]    Compiling anyhow v1.0.82
[INFO] [stderr]     Checking equivalent v1.0.1
[INFO] [stderr]    Compiling serde_json v1.0.115
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling crossbeam-utils v0.8.19
[INFO] [stderr]     Checking hashbrown v0.14.3
[INFO] [stderr]    Compiling memchr v2.7.2
[INFO] [stderr]    Compiling socket2 v0.5.6
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling tracing-core v0.1.32
[INFO] [stderr]     Checking indexmap v2.2.6
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]     Checking subtle v2.5.0
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling tokio v1.37.0
[INFO] [stderr]    Compiling cmake v0.1.50
[INFO] [stderr]    Compiling ring v0.17.8
[INFO] [stderr]    Compiling slab v0.4.9
[INFO] [stderr]    Compiling rustix v0.38.32
[INFO] [stderr]    Compiling pin-utils v0.1.0
[INFO] [stderr]    Compiling libz-ng-sys v1.1.15
[INFO] [stderr]    Compiling futures-task v0.3.30
[INFO] [stderr]    Compiling unicode-normalization v0.1.23
[INFO] [stderr]    Compiling futures-util v0.3.30
[INFO] [stderr]    Compiling unicase v2.7.0
[INFO] [stderr]    Compiling cpufeatures v0.2.12
[INFO] [stderr]    Compiling unicode-bidi v0.3.15
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]    Compiling crc-catalog v2.4.0
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]    Compiling bitflags v2.5.0
[INFO] [stderr]    Compiling openssl-sys v0.9.102
[INFO] [stderr]    Compiling crc v3.2.1
[INFO] [stderr]    Compiling idna v0.5.0
[INFO] [stderr]     Checking regex-automata v0.4.6
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling serde_derive v1.0.197
[INFO] [stderr]    Compiling tracing-attributes v0.1.27
[INFO] [stderr]    Compiling tokio-macros v2.2.0
[INFO] [stderr]    Compiling futures-macro v0.3.30
[INFO] [stderr]    Compiling thiserror-impl v1.0.58
[INFO] [stderr]    Compiling pin-project-internal v1.1.5
[INFO] [stderr]     Checking tracing v0.1.40
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.17
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking regex v1.10.4
[INFO] [stderr]     Checking crossbeam-deque v0.8.5
[INFO] [stderr]    Compiling url v2.5.0
[INFO] [stderr]    Compiling zstd-sys v2.0.10+zstd.1.5.6
[INFO] [stderr]     Checking http v1.1.0
[INFO] [stderr]    Compiling linux-raw-sys v0.4.13
[INFO] [stderr]     Checking unicode-ident v1.0.12
[INFO] [stderr]    Compiling lock_api v0.4.11
[INFO] [stderr]    Compiling mime_guess v2.0.4
[INFO] [stderr]     Checking rayon-core v1.12.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]     Checking tokio-util v0.7.10
[INFO] [stderr]     Checking either v1.10.0
[INFO] [stderr]     Checking itertools v0.12.1
[INFO] [stderr]     Checking httparse v1.8.0
[INFO] [stderr]    Compiling crc32fast v1.4.0
[INFO] [stderr]     Checking rustls-pki-types v1.7.0
[INFO] [stderr]    Compiling zerocopy v0.8.0-alpha.6
[INFO] [stderr]    Compiling adler v1.0.2
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]    Compiling fastrand v2.0.2
[INFO] [stderr]    Compiling prettyplease v0.2.17
[INFO] [stderr]    Compiling tempfile v3.10.1
[INFO] [stderr]    Compiling miniz_oxide v0.7.2
[INFO] [stderr]    Compiling http-body v1.0.0
[INFO] [stderr]    Compiling rustls-webpki v0.101.7
[INFO] [stderr]    Compiling sct v0.7.1
[INFO] [stderr]    Compiling bzip2-sys v0.1.11+1.0.8
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling try-lock v0.2.5
[INFO] [stderr]    Compiling zstd-safe v7.1.0
[INFO] [stderr]    Compiling strsim v0.10.0
[INFO] [stderr]    Compiling base64 v0.21.7
[INFO] [stderr]     Checking iana-time-zone v0.1.60
[INFO] [stderr]    Compiling unicode_categories v0.1.1
[INFO] [stderr]    Compiling darling_core v0.20.8
[INFO] [stderr]    Compiling chrono v0.4.37
[INFO] [stderr]    Compiling rustls-pemfile v1.0.4
[INFO] [stderr]    Compiling openssl v0.10.64
[INFO] [stderr]    Compiling prost-derive v0.12.6
[INFO] [stderr]    Compiling sqlformat v0.2.3
[INFO] [stderr]    Compiling want v0.3.1
[INFO] [stderr]     Checking num-bigint v0.4.5
[INFO] [stderr]    Compiling crossbeam-queue v0.3.11
[INFO] [stderr]    Compiling flate2 v1.0.28
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]     Checking h2 v0.4.4
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]     Checking pin-project v1.1.5
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling tokio-stream v0.1.15
[INFO] [stderr]    Compiling sha2 v0.10.8
[INFO] [stderr]    Compiling hashlink v0.8.4
[INFO] [stderr]    Compiling inout v0.1.3
[INFO] [stderr]     Checking half v2.4.1
[INFO] [stderr]     Checking aligned-vec v0.5.0
[INFO] [stderr]    Compiling built v0.7.3
[INFO] [stderr]    Compiling tower-service v0.3.2
[INFO] [stderr]    Compiling webpki-roots v0.25.4
[INFO] [stderr]    Compiling unicode-properties v0.1.1
[INFO] [stderr]     Checking arrayvec v0.7.4
[INFO] [stderr]     Checking tower-layer v0.3.2
[INFO] [stderr]    Compiling rustls v0.23.10
[INFO] [stderr]    Compiling event-listener v2.5.3
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling regex-syntax v0.8.3
[INFO] [stderr]     Checking anstream v0.6.13
[INFO] [stderr]    Compiling rav1e v0.7.1
[INFO] [stderr]    Compiling deranged v0.3.11
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]    Compiling derive_more v0.99.17
[INFO] [stderr]    Compiling sqlx-core v0.7.4
[INFO] [stderr]    Compiling stringprep v0.1.5
[INFO] [stderr]     Checking v_frame v0.3.8
[INFO] [stderr]    Compiling native-tls v0.2.11
[INFO] [stderr]    Compiling cipher v0.4.4
[INFO] [stderr]    Compiling hyper v1.2.0
[INFO] [stderr]     Checking rand_core v0.9.0-alpha.1
[INFO] [stderr]    Compiling darling_macro v0.20.8
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]    Compiling prost v0.12.6
[INFO] [stderr]     Checking rustls-webpki v0.102.4
[INFO] [stderr]    Compiling zeroize_derive v1.4.2
[INFO] [stderr]    Compiling profiling-procmacros v1.0.15
[INFO] [stderr]    Compiling hkdf v0.12.4
[INFO] [stderr]    Compiling md-5 v0.10.6
[INFO] [stderr]    Compiling lockfree-object-pool v0.1.6
[INFO] [stderr]    Compiling home v0.5.9
[INFO] [stderr]    Compiling mime v0.3.17
[INFO] [stderr]    Compiling zip v2.1.1
[INFO] [stderr]    Compiling fixedbitset v0.4.2
[INFO] [stderr]    Compiling whoami v1.5.1
[INFO] [stderr]    Compiling simd-adler32 v0.3.7
[INFO] [stderr]    Compiling unicode-segmentation v1.11.0
[INFO] [stderr]     Checking zeroize v1.7.0
[INFO] [stderr]     Checking bytemuck v1.16.0
[INFO] [stderr]    Compiling bumpalo v3.16.0
[INFO] [stderr]    Compiling signal-hook v0.3.17
[INFO] [stderr]     Checking base64 v0.22.0
[INFO] [stderr]    Compiling sqlx-postgres v0.7.4
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]    Compiling zopfli v0.8.1
[INFO] [stderr]    Compiling petgraph v0.6.4
[INFO] [stderr]     Checking profiling v1.0.15
[INFO] [stderr]     Checking prost-types v0.12.6
[INFO] [stderr]     Checking hyper-util v0.1.3
[INFO] [stderr]     Checking av1-grain v0.2.3
[INFO] [stderr]    Compiling bzip2 v0.4.4
[INFO] [stderr]    Compiling darling v0.20.8
[INFO] [stderr]     Checking rand_chacha v0.9.0-alpha.1
[INFO] [stderr]    Compiling aes v0.8.4
[INFO] [stderr]    Compiling time v0.3.36
[INFO] [stderr]    Compiling zstd v0.13.1
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]    Compiling async-compression v0.4.8
[INFO] [stderr]    Compiling http-body-util v0.1.1
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]     Checking futures-executor v0.3.30
[INFO] [stderr]    Compiling time-macros v0.2.18
[INFO] [stderr]    Compiling lzma-rs v0.3.0
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling displaydoc v0.2.4
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]    Compiling pbkdf2 v0.12.2
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]     Checking encoding_rs v0.8.33
[INFO] [stderr]    Compiling ipnet v2.9.0
[INFO] [stderr]    Compiling sync_wrapper v1.0.1
[INFO] [stderr]    Compiling multimap v0.10.0
[INFO] [stderr]    Compiling noop_proc_macro v0.3.0
[INFO] [stderr]    Compiling deflate64 v0.1.8
[INFO] [stderr]     Checking weezl v0.1.8
[INFO] [stderr]     Checking new_debug_unreachable v1.0.6
[INFO] [stderr]     Checking bitstream-io v2.4.2
[INFO] [stderr]    Compiling constant_time_eq v0.3.0
[INFO] [stderr]     Checking imgref v1.10.1
[INFO] [stderr]     Checking humantime v2.1.0
[INFO] [stderr]     Checking loop9 v0.1.5
[INFO] [stderr]    Compiling reqwest v0.12.5
[INFO] [stderr]    Compiling prost-build v0.12.4
[INFO] [stderr]     Checking futures v0.3.30
[INFO] [stderr]    Compiling sqlx-macros-core v0.7.4
[INFO] [stderr]     Checking tokio-rustls v0.26.0
[INFO] [stderr]     Checking rand v0.9.0-alpha.1
[INFO] [stderr]    Compiling serde_with_macros v3.7.0
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking rgb v0.8.37
[INFO] [stderr]     Checking avif-serialize v0.8.1
[INFO] [stderr]     Checking webpki-roots v0.26.1
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]     Checking generic-array v1.0.0
[INFO] [stderr]     Checking flume v0.11.0
[INFO] [stderr]     Checking uuid v1.8.0
[INFO] [stderr]     Checking quick-error v2.0.1
[INFO] [stderr]     Checking lebe v0.5.2
[INFO] [stderr]     Checking zune-core v0.4.12
[INFO] [stderr]     Checking bit_field v0.10.2
[INFO] [stderr]     Checking jpeg-decoder v0.3.1
[INFO] [stderr]     Checking zune-jpeg v0.4.11
[INFO] [stderr]     Checking image-webp v0.1.2
[INFO] [stderr]     Checking exr v1.72.0
[INFO] [stderr]     Checking tiff v0.9.1
[INFO] [stderr]    Compiling sqlx-macros v0.7.4
[INFO] [stderr]     Checking png v0.17.13
[INFO] [stderr]     Checking gif v0.13.1
[INFO] [stderr]     Checking ravif v0.11.7
[INFO] [stderr]    Compiling ntrim-core v0.0.1 (/opt/rustwide/workdir/crates/ntrim-core)
[INFO] [stderr]     Checking hyper-rustls v0.27.2
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking brotli-decompressor v4.0.1
[INFO] [stderr]     Checking actix-utils v3.0.1
[INFO] [stderr]     Checking rustls-pemfile v2.1.2
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking tokio-socks v0.5.1
[INFO] [stderr]     Checking actix-rt v2.10.0
[INFO] [stderr]    Compiling jcers_proc v0.1.0
[INFO] [stderr]     Checking env_filter v0.1.0
[INFO] [stderr]     Checking actix-service v2.0.2
[INFO] [stderr]    Compiling bytestring v1.3.1
[INFO] [stderr]     Checking is-terminal v0.4.12
[INFO] [stderr]    Compiling cookie v0.16.2
[INFO] [stderr]     Checking heck v0.5.0
[INFO] [stderr]     Checking image v0.25.1
[INFO] [stderr]     Checking clap_builder v4.5.2
[INFO] [stderr]     Checking jcers v0.1.2
[INFO] [stderr]     Checking brotli v6.0.0
[INFO] [stderr]    Compiling actix-router v0.5.3
[INFO] [stderr]     Checking env_logger v0.11.3
[INFO] [stderr]     Checking h2 v0.3.26
[INFO] [stderr]     Checking ntrim-tools v0.0.1 (/opt/rustwide/workdir/crates/ntrim-tools)
[INFO] [stderr]     Checking local-channel v0.1.5
[INFO] [stderr]     Checking sqlx v0.7.4
[INFO] [stderr]    Compiling clap_derive v4.5.4
[INFO] [stderr]     Checking actix-codec v0.5.2
[INFO] [stderr]     Checking toml_datetime v0.6.5
[INFO] [stderr]     Checking serde_spanned v0.6.5
[INFO] [stderr]    Compiling ntrim-macros v0.0.1 (/opt/rustwide/workdir/crates/ntrim-macros)
[INFO] [stderr]     Checking plotters-backend v0.3.5
[INFO] [stderr]    Compiling virtue v0.0.13
[INFO] [stderr]     Checking winnow v0.6.6
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]    Compiling bincode_derive v2.0.0-rc.3
[INFO] [stderr]     Checking plotters-svg v0.3.5
[INFO] [stderr]     Checking env_logger v0.10.2
[INFO] [stderr]    Compiling actix-web-codegen v4.3.0
[INFO] [stderr]     Checking actix-server v2.4.0
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]    Compiling actix-macros v0.2.4
[INFO] [stderr]     Checking bincode v2.0.0-rc.3
[INFO] [stderr]     Checking toml_edit v0.22.9
[INFO] [stderr]     Checking pretty_env_logger v0.5.0
[INFO] [stderr]     Checking plotters v0.3.5
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking clap v4.5.4
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking dashmap v5.5.3
[INFO] [stderr]     Checking oorandom v11.1.3
[INFO] [stderr]     Checking indent_write v2.2.0
[INFO] [stderr]     Checking serde_toml v0.0.1
[INFO] [stderr]     Checking criterion-plot v0.5.0
[INFO] [stderr]     Checking cool_asserts v2.0.3
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/richmedia/request_upload_resource.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::atomic::AtomicU32`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/richmedia/request_upload_resource.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::atomic::AtomicU32;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Mutex`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/richmedia/request_upload_resource.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::Mutex;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/richmedia/request_upload_resource.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `once_cell::sync::Lazy`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/richmedia/request_upload_resource.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use once_cell::sync::Lazy;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/richmedia/request_upload_ukey.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use bytes::{Buf, Bytes};
[INFO] [stdout]   |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/richmedia/request_upload_ukey.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `oidb_request` and `oidb_response`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/richmedia/request_upload_ukey.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::{oidb_request, oidb_response, pb};
[INFO] [stdout]   |             ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `*`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/richmedia/request_upload_ukey.rs:8:41
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::pb::trpc::rich_media_ntv2::{ * };
[INFO] [stdout]   |                                         ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::commands::troop::GroupInfo`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/troop/get_troop_member_card_info.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::commands::troop::GroupInfo;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::pb`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/troop/get_troop_member_card_info.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::pb;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `JceGet`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/friend/get_friend_group_list.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use jcers::{JceGet, JcePut};
[INFO] [stdout]   |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `await_response`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/friend/get_friend_group_list.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::{await_response, jce, pb};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::commands::troop::GroupMemberPermission`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/friend/get_friend_group_list.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::commands::troop::GroupMemberPermission;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `next_request_id`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/friend/get_friend_group_list.rs:8:18
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::jce::{next_request_id, pack_uni_request_data};
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Error`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use anyhow::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DecodeError`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use prost::{DecodeError, Message};
[INFO] [stdout]   |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/contact/get_summary_card.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Serialize`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/contact/get_summary_card.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::Serialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `oidb_request` and `oidb_response`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/contact/get_summary_card.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::{oidb_request, oidb_response};
[INFO] [stdout]   |             ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `next_request_id`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/get_summary_card.rs:10:18
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::jce::{next_request_id, pack_uni_request_data, RequestPacket};
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BytesMut`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/contact/vote_user.rs:2:20
[INFO] [stdout]   |
[INFO] [stdout] 2 | use bytes::{Bytes, BytesMut};
[INFO] [stdout]   |                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> crates/ntrim-core/src/service/rich_media/get_downlaod_rkey.rs:56:11
[INFO] [stdout]    |
[INFO] [stdout] 56 |         };;
[INFO] [stdout]    |           ^ help: remove this semicolon
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> crates/ntrim-core/src/service/rich_media/request_upload_group_res.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result`
[INFO] [stdout]  --> crates/ntrim-core/src/service/rich_media/request_upload_group_res.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::result;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DynamicImage`
[INFO] [stdout]  --> crates/ntrim-core/src/service/rich_media/request_upload_group_res.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use image::{DynamicImage, GenericImageView};
[INFO] [stdout]   |             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `info`
[INFO] [stdout]  --> crates/ntrim-core/src/service/rich_media/request_upload_group_res.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | use log::{debug, info};
[INFO] [stdout]   |           ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ntrim_tools::tokiort::global_tokio_runtime`
[INFO] [stdout]  --> crates/ntrim-core/src/service/rich_media/request_upload_group_res.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use ntrim_tools::tokiort::global_tokio_runtime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> crates/ntrim-core/src/service/msg/message_factory.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Instant` and `interval_at`
[INFO] [stdout]  --> crates/ntrim-core/src/service/heartbeat.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tokio::time::{Instant, interval_at};
[INFO] [stdout]   |                   ^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `commands`
[INFO] [stdout]  --> crates/ntrim-core/src/service/heartbeat.rs:7:29
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::{await_response, commands};
[INFO] [stdout]   |                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BytesMut`
[INFO] [stdout]  --> crates/ntrim-core/src/service/bdh/echo.rs:3:26
[INFO] [stdout]   |
[INFO] [stdout] 3 | use bytes::{Buf, BufMut, BytesMut};
[INFO] [stdout]   |                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> crates/ntrim-core/src/service/bdh/echo.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `reqwest::header::USER_AGENT`
[INFO] [stdout]  --> crates/ntrim-core/src/service/bdh/echo.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use reqwest::header::USER_AGENT;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `reqwest::header::USER_AGENT`
[INFO] [stdout]  --> crates/ntrim-core/src/service/bdh/upload_block_no_resp.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use reqwest::header::USER_AGENT;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DataHighwayHead`, `DataHighwaySegHead`, `LoginSigHead`, and `ReqDataHighwayHead`
[INFO] [stdout]   --> crates/ntrim-core/src/service/bdh/upload_block_no_resp.rs:11:22
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::pb::bdh::{DataHighwayHead, DataHighwaySegHead, LoginSigHead, ReqDataHighwayHead, RespDataHighway};
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bytes::BufMut`
[INFO] [stdout]  --> crates/ntrim-core/src/service/bdh/mod.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use bytes::BufMut;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `info` and `warn`
[INFO] [stdout]  --> crates/ntrim-core/src/service/bdh/mod.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | use log::{info, warn};
[INFO] [stdout]   |           ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BytePacketBuilder`
[INFO] [stdout]   --> crates/ntrim-core/src/service/bdh/mod.rs:11:26
[INFO] [stdout]    |
[INFO] [stdout] 11 | use ntrim_tools::bytes::{BytePacketBuilder};
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::OnceCell`
[INFO] [stdout]  --> crates/ntrim-core/src/servlet/register/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::cell::OnceCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DateTime`
[INFO] [stdout]  --> crates/ntrim-core/src/servlet/register/mod.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use chrono::{DateTime, NaiveDateTime};
[INFO] [stdout]   |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> crates/ntrim-core/src/servlet/olpush/msg/decoder.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `*`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/msg/decoder.rs:12:32
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::pb::trpc::olpush::{ * };
[INFO] [stdout]    |                                ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Local` and `NaiveDateTime`
[INFO] [stdout]  --> crates/ntrim-core/src/servlet/olpush/msg/mod.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | use chrono::{Local, NaiveDateTime};
[INFO] [stdout]   |              ^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Grp`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/msg/mod.rs:11:22
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::pb::msg::{Grp, olpush_routing_head};
[INFO] [stdout]    |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ntrim_tools::tokiort::global_tokio_runtime`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use ntrim_tools::tokiort::global_tokio_runtime;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bytes::Bytes`
[INFO] [stdout]  --> crates/ntrim-core/src/jce/friendlist.get_multi_group_info.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use bytes::Bytes;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> crates/ntrim-core/src/db/group_member_list.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Acquire`
[INFO] [stdout]  --> crates/ntrim-core/src/db/mod.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use sqlx::{Acquire, PgPool};
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking criterion v0.5.1
[INFO] [stderr]     Checking toml v0.8.12
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/commands/register/mod.rs:28:17
[INFO] [stdout]    |
[INFO] [stdout] 28 |             let mut cookie = SsoC2cMsgCookie::default();
[INFO] [stdout]    |                 ----^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/commands/register_old/mod.rs:13:13
[INFO] [stdout]    |
[INFO] [stdout] 13 |         let mut session = session.write().await;
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:153:33
[INFO] [stdout]     |
[INFO] [stdout] 153 | ...                   let mut ticket = session.ticket_mut(SigType::A2).unwrap();
[INFO] [stdout]     |                           ----^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:161:33
[INFO] [stdout]     |
[INFO] [stdout] 161 | ...                   let mut ticket = session.ticket_mut(SigType::A2).unwrap();
[INFO] [stdout]     |                           ----^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:165:33
[INFO] [stdout]     |
[INFO] [stdout] 165 | ...                   let mut ticket = session.ticket_mut(SigType::ST).unwrap();
[INFO] [stdout]     |                           ----^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:169:33
[INFO] [stdout]     |
[INFO] [stdout] 169 | ...                   let mut ticket = session.ticket_mut(SigType::ST).unwrap();
[INFO] [stdout]     |                           ----^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:228:45
[INFO] [stdout]     |
[INFO] [stdout] 228 | ...                   let mut ticket = session.ticket_mut(SigType::D2).unwrap();
[INFO] [stdout]     |                           ----^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:239:33
[INFO] [stdout]     |
[INFO] [stdout] 239 | ...                   let mut ticket = session.ticket_mut(SigType::D2).unwrap();
[INFO] [stdout]     |                           ----^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:254:33
[INFO] [stdout]     |
[INFO] [stdout] 254 | ...                   let mut ticket = session.ticket_mut(SigType::D2).unwrap();
[INFO] [stdout]     |                           ----^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/commands/richmedia/request_upload_ukey.rs:37:13
[INFO] [stdout]    |
[INFO] [stdout] 37 |         let mut rsp = HttpConn0xff501Response::decode(Bytes::from(data))
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking actix-http v3.7.0
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/richmedia/request_upload_resource.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::atomic::AtomicU32`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/richmedia/request_upload_resource.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::atomic::AtomicU32;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Mutex`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/richmedia/request_upload_resource.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::Mutex;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/richmedia/request_upload_resource.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `once_cell::sync::Lazy`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/richmedia/request_upload_resource.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use once_cell::sync::Lazy;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/richmedia/request_upload_ukey.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use bytes::{Buf, Bytes};
[INFO] [stdout]   |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/richmedia/request_upload_ukey.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `oidb_request` and `oidb_response`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/richmedia/request_upload_ukey.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::{oidb_request, oidb_response, pb};
[INFO] [stdout]   |             ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `*`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/richmedia/request_upload_ukey.rs:8:41
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::pb::trpc::rich_media_ntv2::{ * };
[INFO] [stdout]   |                                         ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::commands::troop::GroupInfo`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/troop/get_troop_member_card_info.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::commands::troop::GroupInfo;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::pb`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/troop/get_troop_member_card_info.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::pb;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `JceGet`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/friend/get_friend_group_list.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use jcers::{JceGet, JcePut};
[INFO] [stdout]   |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `await_response`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/friend/get_friend_group_list.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::{await_response, jce, pb};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::commands::troop::GroupMemberPermission`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/friend/get_friend_group_list.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::commands::troop::GroupMemberPermission;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `next_request_id`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/friend/get_friend_group_list.rs:8:18
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::jce::{next_request_id, pack_uni_request_data};
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Error`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use anyhow::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DecodeError`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use prost::{DecodeError, Message};
[INFO] [stdout]   |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/contact/get_summary_card.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Serialize`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/contact/get_summary_card.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::Serialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `oidb_request` and `oidb_response`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/contact/get_summary_card.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::{oidb_request, oidb_response};
[INFO] [stdout]   |             ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `next_request_id`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/get_summary_card.rs:10:18
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::jce::{next_request_id, pack_uni_request_data, RequestPacket};
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BytesMut`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/contact/vote_user.rs:2:20
[INFO] [stdout]   |
[INFO] [stdout] 2 | use bytes::{Bytes, BytesMut};
[INFO] [stdout]   |                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> crates/ntrim-core/src/service/rich_media/get_downlaod_rkey.rs:56:11
[INFO] [stdout]    |
[INFO] [stdout] 56 |         };;
[INFO] [stdout]    |           ^ help: remove this semicolon
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result`
[INFO] [stdout]  --> crates/ntrim-core/src/service/rich_media/request_upload_group_res.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::result;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DynamicImage`
[INFO] [stdout]  --> crates/ntrim-core/src/service/rich_media/request_upload_group_res.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use image::{DynamicImage, GenericImageView};
[INFO] [stdout]   |             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `info`
[INFO] [stdout]  --> crates/ntrim-core/src/service/rich_media/request_upload_group_res.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | use log::{debug, info};
[INFO] [stdout]   |           ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ntrim_tools::tokiort::global_tokio_runtime`
[INFO] [stdout]  --> crates/ntrim-core/src/service/rich_media/request_upload_group_res.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use ntrim_tools::tokiort::global_tokio_runtime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> crates/ntrim-core/src/service/msg/message_factory.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Instant` and `interval_at`
[INFO] [stdout]  --> crates/ntrim-core/src/service/heartbeat.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tokio::time::{Instant, interval_at};
[INFO] [stdout]   |                   ^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `commands`
[INFO] [stdout]  --> crates/ntrim-core/src/service/heartbeat.rs:7:29
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::{await_response, commands};
[INFO] [stdout]   |                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BytesMut`
[INFO] [stdout]  --> crates/ntrim-core/src/service/bdh/echo.rs:3:26
[INFO] [stdout]   |
[INFO] [stdout] 3 | use bytes::{Buf, BufMut, BytesMut};
[INFO] [stdout]   |                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> crates/ntrim-core/src/service/bdh/echo.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `reqwest::header::USER_AGENT`
[INFO] [stdout]  --> crates/ntrim-core/src/service/bdh/echo.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use reqwest::header::USER_AGENT;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `reqwest::header::USER_AGENT`
[INFO] [stdout]  --> crates/ntrim-core/src/service/bdh/upload_block_no_resp.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use reqwest::header::USER_AGENT;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DataHighwayHead`, `DataHighwaySegHead`, `LoginSigHead`, and `ReqDataHighwayHead`
[INFO] [stdout]   --> crates/ntrim-core/src/service/bdh/upload_block_no_resp.rs:11:22
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::pb::bdh::{DataHighwayHead, DataHighwaySegHead, LoginSigHead, ReqDataHighwayHead, RespDataHighway};
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bytes::BufMut`
[INFO] [stdout]  --> crates/ntrim-core/src/service/bdh/mod.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use bytes::BufMut;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `info` and `warn`
[INFO] [stdout]  --> crates/ntrim-core/src/service/bdh/mod.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | use log::{info, warn};
[INFO] [stdout]   |           ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BytePacketBuilder`
[INFO] [stdout]   --> crates/ntrim-core/src/service/bdh/mod.rs:11:26
[INFO] [stdout]    |
[INFO] [stdout] 11 | use ntrim_tools::bytes::{BytePacketBuilder};
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::OnceCell`
[INFO] [stdout]  --> crates/ntrim-core/src/servlet/register/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::cell::OnceCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DateTime`
[INFO] [stdout]  --> crates/ntrim-core/src/servlet/register/mod.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use chrono::{DateTime, NaiveDateTime};
[INFO] [stdout]   |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> crates/ntrim-core/src/servlet/olpush/msg/decoder.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `*`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/msg/decoder.rs:12:32
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::pb::trpc::olpush::{ * };
[INFO] [stdout]    |                                ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Local` and `NaiveDateTime`
[INFO] [stdout]  --> crates/ntrim-core/src/servlet/olpush/msg/mod.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | use chrono::{Local, NaiveDateTime};
[INFO] [stdout]   |              ^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Grp`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/msg/mod.rs:11:22
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::pb::msg::{Grp, olpush_routing_head};
[INFO] [stdout]    |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ntrim_tools::tokiort::global_tokio_runtime`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use ntrim_tools::tokiort::global_tokio_runtime;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bytes::Bytes`
[INFO] [stdout]  --> crates/ntrim-core/src/jce/friendlist.get_multi_group_info.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use bytes::Bytes;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> crates/ntrim-core/src/db/group_member_list.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Acquire`
[INFO] [stdout]  --> crates/ntrim-core/src/db/mod.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use sqlx::{Acquire, PgPool};
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_list.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |         let mut request: Result<jce::RequestPacket, _> = jcers::from_buf(&mut payload).map_err(Error::from);
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_list.rs:88:13
[INFO] [stdout]    |
[INFO] [stdout] 88 |         let mut data: Result<jce::RequestDataVersion3, _> =
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_list.rs:95:13
[INFO] [stdout]    |
[INFO] [stdout] 95 |         let mut fl_resp = data.map.remove("GetTroopListRespV2").ok_or_else(|| {
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_simple_info.rs:45:13
[INFO] [stdout]    |
[INFO] [stdout] 45 |         let mut request: Result<jce::RequestPacket, _> = jcers::from_buf(&mut payload).map_err(Error::from);
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_simple_info.rs:51:13
[INFO] [stdout]    |
[INFO] [stdout] 51 |         let mut data: Result<jce::RequestDataVersion3, _> =
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_simple_info.rs:58:13
[INFO] [stdout]    |
[INFO] [stdout] 58 |         let mut fl_resp = data.map.remove("GMTIRESP").ok_or_else(|| {
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/ntrim-core/src/service/rich_media/request_upload_group_res.rs:115:13
[INFO] [stdout]     |
[INFO] [stdout] 115 |         let mut index = &mut msg_info_body.index;
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/service/friend/get_friend_list.rs:57:17
[INFO] [stdout]    |
[INFO] [stdout] 57 |             let mut output = output.clone();
[INFO] [stdout]    |                 ----^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/service/bdh/mod.rs:47:13
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let mut client = Client::builder()
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp`: use `DateTime::from_timestamp` instead
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/register/mod.rs:43:53
[INFO] [stdout]    |
[INFO] [stdout] 43 |                     latest_msg_time: NaiveDateTime::from_timestamp(node.latest_msg_time as i64, 0),
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/commands/register/mod.rs:28:17
[INFO] [stdout]    |
[INFO] [stdout] 28 |             let mut cookie = SsoC2cMsgCookie::default();
[INFO] [stdout]    |                 ----^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/commands/register_old/mod.rs:13:13
[INFO] [stdout]    |
[INFO] [stdout] 13 |         let mut session = session.write().await;
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/msg/mod.rs:51:9
[INFO] [stdout]    |
[INFO] [stdout] 51 |     let mut rich_text = msg.msg_body.rich_text.unwrap();
[INFO] [stdout]    |         ----^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/mod.rs:50:41
[INFO] [stdout]    |
[INFO] [stdout] 50 |     async fn on_msg_push(bot: Arc<Bot>, mut from: FromServiceMsg) -> Result<(), Error> {
[INFO] [stdout]    |                                         ----^^^^
[INFO] [stdout]    |                                         |
[INFO] [stdout]    |                                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/mod.rs:79:41
[INFO] [stdout]    |
[INFO] [stdout] 79 |     async fn on_req_push(bot: Arc<Bot>, mut from: FromServiceMsg) -> Result<(), Error> {
[INFO] [stdout]    |                                         ----^^^^
[INFO] [stdout]    |                                         |
[INFO] [stdout]    |                                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:153:33
[INFO] [stdout]     |
[INFO] [stdout] 153 | ...                   let mut ticket = session.ticket_mut(SigType::A2).unwrap();
[INFO] [stdout]     |                           ----^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:161:33
[INFO] [stdout]     |
[INFO] [stdout] 161 | ...                   let mut ticket = session.ticket_mut(SigType::A2).unwrap();
[INFO] [stdout]     |                           ----^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:165:33
[INFO] [stdout]     |
[INFO] [stdout] 165 | ...                   let mut ticket = session.ticket_mut(SigType::ST).unwrap();
[INFO] [stdout]     |                           ----^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:169:33
[INFO] [stdout]     |
[INFO] [stdout] 169 | ...                   let mut ticket = session.ticket_mut(SigType::ST).unwrap();
[INFO] [stdout]     |                           ----^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:228:45
[INFO] [stdout]     |
[INFO] [stdout] 228 | ...                   let mut ticket = session.ticket_mut(SigType::D2).unwrap();
[INFO] [stdout]     |                           ----^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:239:33
[INFO] [stdout]     |
[INFO] [stdout] 239 | ...                   let mut ticket = session.ticket_mut(SigType::D2).unwrap();
[INFO] [stdout]     |                           ----^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:254:33
[INFO] [stdout]     |
[INFO] [stdout] 254 | ...                   let mut ticket = session.ticket_mut(SigType::D2).unwrap();
[INFO] [stdout]     |                           ----^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/commands/richmedia/request_upload_ukey.rs:37:13
[INFO] [stdout]    |
[INFO] [stdout] 37 |         let mut rsp = HttpConn0xff501Response::decode(Bytes::from(data))
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_list.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |         let mut request: Result<jce::RequestPacket, _> = jcers::from_buf(&mut payload).map_err(Error::from);
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_list.rs:88:13
[INFO] [stdout]    |
[INFO] [stdout] 88 |         let mut data: Result<jce::RequestDataVersion3, _> =
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_list.rs:95:13
[INFO] [stdout]    |
[INFO] [stdout] 95 |         let mut fl_resp = data.map.remove("GetTroopListRespV2").ok_or_else(|| {
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_simple_info.rs:45:13
[INFO] [stdout]    |
[INFO] [stdout] 45 |         let mut request: Result<jce::RequestPacket, _> = jcers::from_buf(&mut payload).map_err(Error::from);
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_simple_info.rs:51:13
[INFO] [stdout]    |
[INFO] [stdout] 51 |         let mut data: Result<jce::RequestDataVersion3, _> =
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_simple_info.rs:58:13
[INFO] [stdout]    |
[INFO] [stdout] 58 |         let mut fl_resp = data.map.remove("GMTIRESP").ok_or_else(|| {
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/ntrim-core/src/service/rich_media/request_upload_group_res.rs:115:13
[INFO] [stdout]     |
[INFO] [stdout] 115 |         let mut index = &mut msg_info_body.index;
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/service/friend/get_friend_list.rs:57:17
[INFO] [stdout]    |
[INFO] [stdout] 57 |             let mut output = output.clone();
[INFO] [stdout]    |                 ----^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/service/bdh/mod.rs:47:13
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let mut client = Client::builder()
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp`: use `DateTime::from_timestamp` instead
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/register/mod.rs:43:53
[INFO] [stdout]    |
[INFO] [stdout] 43 |                     latest_msg_time: NaiveDateTime::from_timestamp(node.latest_msg_time as i64, 0),
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/msg/mod.rs:51:9
[INFO] [stdout]    |
[INFO] [stdout] 51 |     let mut rich_text = msg.msg_body.rich_text.unwrap();
[INFO] [stdout]    |         ----^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/mod.rs:50:41
[INFO] [stdout]    |
[INFO] [stdout] 50 |     async fn on_msg_push(bot: Arc<Bot>, mut from: FromServiceMsg) -> Result<(), Error> {
[INFO] [stdout]    |                                         ----^^^^
[INFO] [stdout]    |                                         |
[INFO] [stdout]    |                                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/mod.rs:79:41
[INFO] [stdout]    |
[INFO] [stdout] 79 |     async fn on_req_push(bot: Arc<Bot>, mut from: FromServiceMsg) -> Result<(), Error> {
[INFO] [stdout]    |                                         ----^^^^
[INFO] [stdout]    |                                         |
[INFO] [stdout]    |                                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/register_old/mod.rs:37:20
[INFO] [stdout]    |
[INFO] [stdout] 37 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<SsoSyncInfoResponse> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `face`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:175:33
[INFO] [stdout]     |
[INFO] [stdout] 175 | ...                   let face = buf.get_u16();
[INFO] [stdout]     |                           ^^^^ help: if this is intentional, prefix it with an underscore: `_face`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `age`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:176:33
[INFO] [stdout]     |
[INFO] [stdout] 176 | ...                   let age = buf.get_u8();
[INFO] [stdout]     |                           ^^^ help: if this is intentional, prefix it with an underscore: `_age`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gender`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:177:33
[INFO] [stdout]     |
[INFO] [stdout] 177 | ...                   let gender = buf.get_u8();
[INFO] [stdout]     |                           ^^^^^^ help: if this is intentional, prefix it with an underscore: `_gender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `version`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:275:33
[INFO] [stdout]     |
[INFO] [stdout] 275 | ...                   let version = v.get_u8();
[INFO] [stdout]     |                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_version`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uin`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:278:37
[INFO] [stdout]     |
[INFO] [stdout] 278 | ...                   let uin = v.get_u64();
[INFO] [stdout]     |                           ^^^ help: if this is intentional, prefix it with an underscore: `_uin`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ip`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:279:37
[INFO] [stdout]     |
[INFO] [stdout] 279 | ...                   let ip = v.copy_to_bytes(4);
[INFO] [stdout]     |                           ^^ help: if this is intentional, prefix it with an underscore: `_ip`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:280:37
[INFO] [stdout]     |
[INFO] [stdout] 280 | ...                   let time = v.get_u32();
[INFO] [stdout]     |                           ^^^^ help: if this is intentional, prefix it with an underscore: `_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `app_id`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:281:37
[INFO] [stdout]     |
[INFO] [stdout] 281 | ...                   let app_id = v.get_u32();
[INFO] [stdout]     |                           ^^^^^^ help: if this is intentional, prefix it with an underscore: `_app_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t508`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:297:21
[INFO] [stdout]     |
[INFO] [stdout] 297 |                 let t508 = tlv_map.get(&0x508);
[INFO] [stdout]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_t508`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/status/nt_heartbeat.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 |     async fn generate(bot: &Arc<Bot>) -> Option<Vec<u8>> {
[INFO] [stdout]    |                       ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/status/nt_heartbeat.rs:25:20
[INFO] [stdout]    |
[INFO] [stdout] 25 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<u64> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/status/heartbeat.rs:7:23
[INFO] [stdout]   |
[INFO] [stdout] 7 |     async fn generate(bot: &Arc<Bot>) -> Option<Vec<u8>> { None }
[INFO] [stdout]   |                       ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/status/heartbeat.rs:9:20
[INFO] [stdout]   |
[INFO] [stdout] 9 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<()> { None }
[INFO] [stdout]   |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/status/heartbeat.rs:9:36
[INFO] [stdout]   |
[INFO] [stdout] 9 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<()> { None }
[INFO] [stdout]   |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/richmedia/request_download_rkey.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 |     async fn generate(bot: &Arc<Bot>) -> Option<Vec<u8>> {
[INFO] [stdout]    |                       ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/richmedia/request_download_rkey.rs:37:20
[INFO] [stdout]    |
[INFO] [stdout] 37 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<DownloadRkeyRsp> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/richmedia/request_upload_resource.rs:77:20
[INFO] [stdout]    |
[INFO] [stdout] 77 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<UploadRsp> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/richmedia/request_upload_ukey.rs:35:20
[INFO] [stdout]    |
[INFO] [stdout] 35 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<(Vec<u8>, Vec<(u32, u32)>)> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/msg_svc/send_raw_msg.rs:39:20
[INFO] [stdout]    |
[INFO] [stdout] 39 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<u64> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_list.rs:78:20
[INFO] [stdout]    |
[INFO] [stdout] 78 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<(Vec<GroupInfo>, Bytes)> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/troop/get_troop_member_list.rs:130:20
[INFO] [stdout]     |
[INFO] [stdout] 130 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<(Vec<GroupMemberInfo>, i64)> {
[INFO] [stdout]     |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_simple_info.rs:43:20
[INFO] [stdout]    |
[INFO] [stdout] 43 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<Vec<GroupInfo>> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_info.rs:11:23
[INFO] [stdout]    |
[INFO] [stdout] 11 |     async fn generate(bot: &Arc<Bot>, group_codes: Vec<i64>) -> Option<Vec<u8>> {
[INFO] [stdout]    |                       ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_info.rs:54:20
[INFO] [stdout]    |
[INFO] [stdout] 54 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<Vec<GroupInfo>> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_member_card_info.rs:15:23
[INFO] [stdout]    |
[INFO] [stdout] 15 |     async fn generate(bot: &Arc<Bot>, group_code: i64, target: i64) -> Option<Vec<u8>> {
[INFO] [stdout]    |                       ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_member_card_info.rs:25:20
[INFO] [stdout]    |
[INFO] [stdout] 25 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<crate::commands::troop::GroupMemberInfo> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/friend/get_friend_group_list.rs:156:20
[INFO] [stdout]     |
[INFO] [stdout] 156 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<FriendListResponse> {
[INFO] [stdout]     |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking actix-web v4.7.0
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:38:23
[INFO] [stdout]    |
[INFO] [stdout] 38 |     async fn generate(bot: &Arc<Bot>, user_id: i64) -> Option<Vec<u8>> {
[INFO] [stdout]    |                       ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:61:20
[INFO] [stdout]    |
[INFO] [stdout] 61 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<QQProfile> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/set_profile_detail.rs:23:20
[INFO] [stdout]    |
[INFO] [stdout] 23 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<()> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/set_profile_detail.rs:23:36
[INFO] [stdout]    |
[INFO] [stdout] 23 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<()> {
[INFO] [stdout]    |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/contact/get_summary_card.rs:205:20
[INFO] [stdout]     |
[INFO] [stdout] 205 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<SummaryCardInfo> {
[INFO] [stdout]     |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/vote_user.rs:57:20
[INFO] [stdout]    |
[INFO] [stdout] 57 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<()> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/vote_user.rs:57:36
[INFO] [stdout]    |
[INFO] [stdout] 57 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<()> {
[INFO] [stdout]    |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/register_old/mod.rs:37:20
[INFO] [stdout]    |
[INFO] [stdout] 37 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<SsoSyncInfoResponse> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `face`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:175:33
[INFO] [stdout]     |
[INFO] [stdout] 175 | ...                   let face = buf.get_u16();
[INFO] [stdout]     |                           ^^^^ help: if this is intentional, prefix it with an underscore: `_face`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `age`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:176:33
[INFO] [stdout]     |
[INFO] [stdout] 176 | ...                   let age = buf.get_u8();
[INFO] [stdout]     |                           ^^^ help: if this is intentional, prefix it with an underscore: `_age`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gender`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:177:33
[INFO] [stdout]     |
[INFO] [stdout] 177 | ...                   let gender = buf.get_u8();
[INFO] [stdout]     |                           ^^^^^^ help: if this is intentional, prefix it with an underscore: `_gender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `version`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:275:33
[INFO] [stdout]     |
[INFO] [stdout] 275 | ...                   let version = v.get_u8();
[INFO] [stdout]     |                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_version`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uin`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:278:37
[INFO] [stdout]     |
[INFO] [stdout] 278 | ...                   let uin = v.get_u64();
[INFO] [stdout]     |                           ^^^ help: if this is intentional, prefix it with an underscore: `_uin`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ip`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:279:37
[INFO] [stdout]     |
[INFO] [stdout] 279 | ...                   let ip = v.copy_to_bytes(4);
[INFO] [stdout]     |                           ^^ help: if this is intentional, prefix it with an underscore: `_ip`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:280:37
[INFO] [stdout]     |
[INFO] [stdout] 280 | ...                   let time = v.get_u32();
[INFO] [stdout]     |                           ^^^^ help: if this is intentional, prefix it with an underscore: `_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `app_id`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:281:37
[INFO] [stdout]     |
[INFO] [stdout] 281 | ...                   let app_id = v.get_u32();
[INFO] [stdout]     |                           ^^^^^^ help: if this is intentional, prefix it with an underscore: `_app_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t508`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:297:21
[INFO] [stdout]     |
[INFO] [stdout] 297 |                 let t508 = tlv_map.get(&0x508);
[INFO] [stdout]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_t508`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/status/nt_heartbeat.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 |     async fn generate(bot: &Arc<Bot>) -> Option<Vec<u8>> {
[INFO] [stdout]    |                       ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/status/nt_heartbeat.rs:25:20
[INFO] [stdout]    |
[INFO] [stdout] 25 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<u64> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/status/heartbeat.rs:7:23
[INFO] [stdout]   |
[INFO] [stdout] 7 |     async fn generate(bot: &Arc<Bot>) -> Option<Vec<u8>> { None }
[INFO] [stdout]   |                       ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/status/heartbeat.rs:9:20
[INFO] [stdout]   |
[INFO] [stdout] 9 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<()> { None }
[INFO] [stdout]   |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]  --> crates/ntrim-core/src/commands/status/heartbeat.rs:9:36
[INFO] [stdout]   |
[INFO] [stdout] 9 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<()> { None }
[INFO] [stdout]   |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/richmedia/request_download_rkey.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 |     async fn generate(bot: &Arc<Bot>) -> Option<Vec<u8>> {
[INFO] [stdout]    |                       ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/richmedia/request_download_rkey.rs:37:20
[INFO] [stdout]    |
[INFO] [stdout] 37 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<DownloadRkeyRsp> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/richmedia/request_upload_resource.rs:77:20
[INFO] [stdout]    |
[INFO] [stdout] 77 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<UploadRsp> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/richmedia/request_upload_ukey.rs:35:20
[INFO] [stdout]    |
[INFO] [stdout] 35 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<(Vec<u8>, Vec<(u32, u32)>)> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/msg_svc/send_raw_msg.rs:39:20
[INFO] [stdout]    |
[INFO] [stdout] 39 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<u64> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_list.rs:78:20
[INFO] [stdout]    |
[INFO] [stdout] 78 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<(Vec<GroupInfo>, Bytes)> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/troop/get_troop_member_list.rs:130:20
[INFO] [stdout]     |
[INFO] [stdout] 130 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<(Vec<GroupMemberInfo>, i64)> {
[INFO] [stdout]     |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_simple_info.rs:43:20
[INFO] [stdout]    |
[INFO] [stdout] 43 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<Vec<GroupInfo>> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_info.rs:11:23
[INFO] [stdout]    |
[INFO] [stdout] 11 |     async fn generate(bot: &Arc<Bot>, group_codes: Vec<i64>) -> Option<Vec<u8>> {
[INFO] [stdout]    |                       ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_info.rs:54:20
[INFO] [stdout]    |
[INFO] [stdout] 54 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<Vec<GroupInfo>> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_member_card_info.rs:15:23
[INFO] [stdout]    |
[INFO] [stdout] 15 |     async fn generate(bot: &Arc<Bot>, group_code: i64, target: i64) -> Option<Vec<u8>> {
[INFO] [stdout]    |                       ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/troop/get_troop_member_card_info.rs:25:20
[INFO] [stdout]    |
[INFO] [stdout] 25 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<crate::commands::troop::GroupMemberInfo> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/friend/get_friend_group_list.rs:156:20
[INFO] [stdout]     |
[INFO] [stdout] 156 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<FriendListResponse> {
[INFO] [stdout]     |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:38:23
[INFO] [stdout]    |
[INFO] [stdout] 38 |     async fn generate(bot: &Arc<Bot>, user_id: i64) -> Option<Vec<u8>> {
[INFO] [stdout]    |                       ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:61:20
[INFO] [stdout]    |
[INFO] [stdout] 61 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<QQProfile> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/set_profile_detail.rs:23:20
[INFO] [stdout]    |
[INFO] [stdout] 23 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<()> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/set_profile_detail.rs:23:36
[INFO] [stdout]    |
[INFO] [stdout] 23 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<()> {
[INFO] [stdout]    |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]    --> crates/ntrim-core/src/commands/contact/get_summary_card.rs:205:20
[INFO] [stdout]     |
[INFO] [stdout] 205 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<SummaryCardInfo> {
[INFO] [stdout]     |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bot`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/vote_user.rs:57:20
[INFO] [stdout]    |
[INFO] [stdout] 57 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<()> {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_bot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/vote_user.rs:57:36
[INFO] [stdout]    |
[INFO] [stdout] 57 |     async fn parse(bot: &Arc<Bot>, data: Vec<u8>) -> Option<()> {
[INFO] [stdout]    |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `servlet`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/register/mod.rs:29:27
[INFO] [stdout]    |
[INFO] [stdout] 29 |     async fn on_sync_push(servlet: &RegisterProxyServlet, sync_push: Result<TrpcInfoSyncPush, DecodeError>) {
[INFO] [stdout]    |                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_servlet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `servlet`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/register/mod.rs:52:23
[INFO] [stdout]    |
[INFO] [stdout] 52 |     fn on_push_params(servlet: &RegisterProxyServlet, push_params: Result<TrpcPushParams, DecodeError>) {
[INFO] [stdout]    |                       ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_servlet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/msg/decoder.rs:55:25
[INFO] [stdout]    |
[INFO] [stdout] 55 |                     let size = buf.get_u16();
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/msg/decoder.rs:56:25
[INFO] [stdout]    |
[INFO] [stdout] 56 |                     let pos = buf.get_u16();
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nick_len`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/msg/decoder.rs:57:25
[INFO] [stdout]    |
[INFO] [stdout] 57 |                     let nick_len = buf.get_u16();
[INFO] [stdout]    |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nick_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_at_all`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/msg/decoder.rs:58:25
[INFO] [stdout]    |
[INFO] [stdout] 58 |                     let is_at_all = buf.get_u8();
[INFO] [stdout]    |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_at_all`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]    --> crates/ntrim-core/src/servlet/olpush/msg/decoder.rs:116:41
[INFO] [stdout]     |
[INFO] [stdout] 116 |             AioElem::ArkJson(LightArk { data }) => {
[INFO] [stdout]     |                                         ^^^^ help: try ignoring the field: `data: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `upload_time`
[INFO] [stdout]    --> crates/ntrim-core/src/servlet/olpush/msg/decoder.rs:151:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |         let upload_time = index.upload_time;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_upload_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_uuid`
[INFO] [stdout]    --> crates/ntrim-core/src/servlet/olpush/msg/decoder.rs:153:13
[INFO] [stdout]     |
[INFO] [stdout] 153 |         let file_uuid = &index.file_uuid;
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_uuid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from_sub_appid`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/msg/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let from_sub_appid = msg.routing_head.from_app_id;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_from_sub_appid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `platform`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/msg/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let platform = msg.routing_head.platform;
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_platform`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `IoError` is never constructed
[INFO] [stdout]   --> crates/ntrim-core/src/client/codec/mod.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum CodecError {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 17 |     IoError
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CodecError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `t533_data` is never used
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/tlv.rs:342:8
[INFO] [stdout]     |
[INFO] [stdout] 342 | pub fn t533_data(buf: &mut BytesMut, data: &[u8]) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FIELD_SET_BIRTHDAY` is never used
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const FIELD_SET_BIRTHDAY: u16 = 26003;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FIELD_PERSONALITY_LABEL_SWITCH` is never used
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:26:7
[INFO] [stdout]    |
[INFO] [stdout] 26 | const FIELD_PERSONALITY_LABEL_SWITCH: u16 = 42128;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FIELD_ONLINE_STATUS` is never used
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const FIELD_ONLINE_STATUS: u16 =42257;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FIELD_STICKY_NOTE_OFFLINE` is never used
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const FIELD_STICKY_NOTE_OFFLINE: u16 = 45168;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/register/mod.rs:15:33
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RegisterProxyServlet(Arc<Bot>);
[INFO] [stdout]    |            -------------------- ^^^^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TroopMultiinfoResponse` is never constructed
[INFO] [stdout]   --> crates/ntrim-core/src/jce/friendlist.get_multi_group_info.rs:12:13
[INFO] [stdout]    |
[INFO] [stdout] 12 | jce_struct!(TroopMultiinfoResponse {
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `jce_struct` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:336:9
[INFO] [stdout]     |
[INFO] [stdout] 336 |         async fn generate_tlv544(&self, session: &SsoSession, qsec: Arc<dyn QSecurity>) -> Vec<u8>;
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout]     = note: `#[warn(async_fn_in_trait)]` on by default
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 336 -         async fn generate_tlv544(&self, session: &SsoSession, qsec: Arc<dyn QSecurity>) -> Vec<u8>;
[INFO] [stdout] 336 +         fn generate_tlv544(&self, session: &SsoSession, qsec: Arc<dyn QSecurity>) -> impl std::future::Future<Output = Vec<u8>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:338:9
[INFO] [stdout]     |
[INFO] [stdout] 338 |         async fn generate_tlv_body(
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 338 ~         fn generate_tlv_body(
[INFO] [stdout] 339 |             &self,
[INFO] [stdout] ...
[INFO] [stdout] 343 |             seq: u32
[INFO] [stdout] 344 ~         ) -> impl std::future::Future<Output = Vec<u8>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> crates/ntrim-core/src/service/rich_media/get_downlaod_rkey.rs:50:36
[INFO] [stdout]    |
[INFO] [stdout] 50 |     let is_rkey_expires = unsafe { RKEY.lock().await.get(&flag) }
[INFO] [stdout]    |                                    ^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]    |
[INFO] [stdout] 32 - static mut RKEY: Lazy<Mutex<HashMap<u8, RKey>>> = Lazy::new(|| Mutex::new(HashMap::new()));
[INFO] [stdout] 32 + static RKEY: Lazy<Mutex<HashMap<u8, RKey>>> = Lazy::new(|| Mutex::new(HashMap::new()));
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> crates/ntrim-core/src/service/rich_media/get_downlaod_rkey.rs:60:17
[INFO] [stdout]    |
[INFO] [stdout] 60 |                 RKEY.lock().await.insert(r#type, RKey::new(
[INFO] [stdout]    |                 ^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]    |
[INFO] [stdout] 32 - static mut RKEY: Lazy<Mutex<HashMap<u8, RKey>>> = Lazy::new(|| Mutex::new(HashMap::new()));
[INFO] [stdout] 32 + static RKEY: Lazy<Mutex<HashMap<u8, RKey>>> = Lazy::new(|| Mutex::new(HashMap::new()));
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> crates/ntrim-core/src/service/rich_media/get_downlaod_rkey.rs:67:17
[INFO] [stdout]    |
[INFO] [stdout] 67 |     Ok(unsafe { RKEY.lock().await.get(&flag).cloned() })
[INFO] [stdout]    |                 ^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]    |
[INFO] [stdout] 32 - static mut RKEY: Lazy<Mutex<HashMap<u8, RKey>>> = Lazy::new(|| Mutex::new(HashMap::new()));
[INFO] [stdout] 32 + static RKEY: Lazy<Mutex<HashMap<u8, RKey>>> = Lazy::new(|| Mutex::new(HashMap::new()));
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `servlet`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/register/mod.rs:29:27
[INFO] [stdout]    |
[INFO] [stdout] 29 |     async fn on_sync_push(servlet: &RegisterProxyServlet, sync_push: Result<TrpcInfoSyncPush, DecodeError>) {
[INFO] [stdout]    |                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_servlet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `servlet`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/register/mod.rs:52:23
[INFO] [stdout]    |
[INFO] [stdout] 52 |     fn on_push_params(servlet: &RegisterProxyServlet, push_params: Result<TrpcPushParams, DecodeError>) {
[INFO] [stdout]    |                       ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_servlet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/msg/decoder.rs:55:25
[INFO] [stdout]    |
[INFO] [stdout] 55 |                     let size = buf.get_u16();
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/msg/decoder.rs:56:25
[INFO] [stdout]    |
[INFO] [stdout] 56 |                     let pos = buf.get_u16();
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nick_len`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/msg/decoder.rs:57:25
[INFO] [stdout]    |
[INFO] [stdout] 57 |                     let nick_len = buf.get_u16();
[INFO] [stdout]    |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nick_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_at_all`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/msg/decoder.rs:58:25
[INFO] [stdout]    |
[INFO] [stdout] 58 |                     let is_at_all = buf.get_u8();
[INFO] [stdout]    |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_at_all`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]    --> crates/ntrim-core/src/servlet/olpush/msg/decoder.rs:116:41
[INFO] [stdout]     |
[INFO] [stdout] 116 |             AioElem::ArkJson(LightArk { data }) => {
[INFO] [stdout]     |                                         ^^^^ help: try ignoring the field: `data: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `upload_time`
[INFO] [stdout]    --> crates/ntrim-core/src/servlet/olpush/msg/decoder.rs:151:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |         let upload_time = index.upload_time;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_upload_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_uuid`
[INFO] [stdout]    --> crates/ntrim-core/src/servlet/olpush/msg/decoder.rs:153:13
[INFO] [stdout]     |
[INFO] [stdout] 153 |         let file_uuid = &index.file_uuid;
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_uuid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from_sub_appid`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/msg/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let from_sub_appid = msg.routing_head.from_app_id;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_from_sub_appid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `platform`
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/olpush/msg/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let platform = msg.routing_head.platform;
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_platform`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `IoError` is never constructed
[INFO] [stdout]   --> crates/ntrim-core/src/client/codec/mod.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum CodecError {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 17 |     IoError
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CodecError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `t533_data` is never used
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/tlv.rs:342:8
[INFO] [stdout]     |
[INFO] [stdout] 342 | pub fn t533_data(buf: &mut BytesMut, data: &[u8]) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FIELD_SET_BIRTHDAY` is never used
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const FIELD_SET_BIRTHDAY: u16 = 26003;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FIELD_PERSONALITY_LABEL_SWITCH` is never used
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:26:7
[INFO] [stdout]    |
[INFO] [stdout] 26 | const FIELD_PERSONALITY_LABEL_SWITCH: u16 = 42128;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FIELD_ONLINE_STATUS` is never used
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const FIELD_ONLINE_STATUS: u16 =42257;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FIELD_STICKY_NOTE_OFFLINE` is never used
[INFO] [stdout]   --> crates/ntrim-core/src/commands/contact/get_profile_detail.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const FIELD_STICKY_NOTE_OFFLINE: u16 = 45168;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> crates/ntrim-core/src/servlet/register/mod.rs:15:33
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RegisterProxyServlet(Arc<Bot>);
[INFO] [stdout]    |            -------------------- ^^^^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TroopMultiinfoResponse` is never constructed
[INFO] [stdout]   --> crates/ntrim-core/src/jce/friendlist.get_multi_group_info.rs:12:13
[INFO] [stdout]    |
[INFO] [stdout] 12 | jce_struct!(TroopMultiinfoResponse {
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `jce_struct` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:336:9
[INFO] [stdout]     |
[INFO] [stdout] 336 |         async fn generate_tlv544(&self, session: &SsoSession, qsec: Arc<dyn QSecurity>) -> Vec<u8>;
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout]     = note: `#[warn(async_fn_in_trait)]` on by default
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 336 -         async fn generate_tlv544(&self, session: &SsoSession, qsec: Arc<dyn QSecurity>) -> Vec<u8>;
[INFO] [stdout] 336 +         fn generate_tlv544(&self, session: &SsoSession, qsec: Arc<dyn QSecurity>) -> impl std::future::Future<Output = Vec<u8>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> crates/ntrim-core/src/commands/wtlogin/mod.rs:338:9
[INFO] [stdout]     |
[INFO] [stdout] 338 |         async fn generate_tlv_body(
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 338 ~         fn generate_tlv_body(
[INFO] [stdout] 339 |             &self,
[INFO] [stdout] ...
[INFO] [stdout] 343 |             seq: u32
[INFO] [stdout] 344 ~         ) -> impl std::future::Future<Output = Vec<u8>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> crates/ntrim-core/src/service/rich_media/get_downlaod_rkey.rs:50:36
[INFO] [stdout]    |
[INFO] [stdout] 50 |     let is_rkey_expires = unsafe { RKEY.lock().await.get(&flag) }
[INFO] [stdout]    |                                    ^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]    |
[INFO] [stdout] 32 - static mut RKEY: Lazy<Mutex<HashMap<u8, RKey>>> = Lazy::new(|| Mutex::new(HashMap::new()));
[INFO] [stdout] 32 + static RKEY: Lazy<Mutex<HashMap<u8, RKey>>> = Lazy::new(|| Mutex::new(HashMap::new()));
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> crates/ntrim-core/src/service/rich_media/get_downlaod_rkey.rs:60:17
[INFO] [stdout]    |
[INFO] [stdout] 60 |                 RKEY.lock().await.insert(r#type, RKey::new(
[INFO] [stdout]    |                 ^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]    |
[INFO] [stdout] 32 - static mut RKEY: Lazy<Mutex<HashMap<u8, RKey>>> = Lazy::new(|| Mutex::new(HashMap::new()));
[INFO] [stdout] 32 + static RKEY: Lazy<Mutex<HashMap<u8, RKey>>> = Lazy::new(|| Mutex::new(HashMap::new()));
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> crates/ntrim-core/src/service/rich_media/get_downlaod_rkey.rs:67:17
[INFO] [stdout]    |
[INFO] [stdout] 67 |     Ok(unsafe { RKEY.lock().await.get(&flag).cloned() })
[INFO] [stdout]    |                 ^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]    |
[INFO] [stdout] 32 - static mut RKEY: Lazy<Mutex<HashMap<u8, RKey>>> = Lazy::new(|| Mutex::new(HashMap::new()));
[INFO] [stdout] 32 + static RKEY: Lazy<Mutex<HashMap<u8, RKey>>> = Lazy::new(|| Mutex::new(HashMap::new()));
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking ntrim v0.0.1 (/opt/rustwide/workdir/crates/ntrim)
[INFO] [stdout] warning: unused import: `*`
[INFO] [stdout]  --> crates/ntrim/src/backend/onebot/api/account/get_group_member_info.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | use ntrim_core::{*};
[INFO] [stdout]   |                  ^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PG_POOL`
[INFO] [stdout]  --> crates/ntrim/src/backend/onebot/api/account/get_group_member_info.rs:8:22
[INFO] [stdout]   |
[INFO] [stdout] 8 | use ntrim_core::db::{PG_POOL};
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::backend::UID_UIN_MAP`
[INFO] [stdout]  --> crates/ntrim/src/backend/onebot/api/message/send_group_msg.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::backend::UID_UIN_MAP;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `*`
[INFO] [stdout]  --> crates/ntrim/src/backend/onebot/api/account/get_group_member_info.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | use ntrim_core::{*};
[INFO] [stdout]   |                  ^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PG_POOL`
[INFO] [stdout]  --> crates/ntrim/src/backend/onebot/api/account/get_group_member_info.rs:8:22
[INFO] [stdout]   |
[INFO] [stdout] 8 | use ntrim_core::db::{PG_POOL};
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::backend::UID_UIN_MAP`
[INFO] [stdout]  --> crates/ntrim/src/backend/onebot/api/message/send_group_msg.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::backend::UID_UIN_MAP;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OnebotRequest` is never constructed
[INFO] [stdout]  --> crates/ntrim/src/backend/onebot/api/mod.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct OnebotRequest {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `IllegalInputError` is never constructed
[INFO] [stdout]   --> crates/ntrim/src/backend/onebot/api/mod.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub enum OnebotError {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 57 |     IllegalInputError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OnebotError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `content_type_error` and `illegal_input` are never used
[INFO] [stdout]   --> crates/ntrim/src/backend/onebot/api/mod.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | impl OnebotError {
[INFO] [stdout]    | ---------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 72 |     fn content_type_error(str: &str) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     fn illegal_input(str: &str) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `recall_duration` is never read
[INFO] [stdout]   --> crates/ntrim/src/backend/onebot/api/message/send_private_msg.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct SendPrivateMessageParams {
[INFO] [stdout]    |        ------------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     recall_duration: Option<i64>
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SendPrivateMessageParams` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `recall_duration` is never read
[INFO] [stdout]   --> crates/ntrim/src/backend/onebot/api/message/send_group_msg.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct SendGroupMessageParams {
[INFO] [stdout]    |        ---------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     recall_duration: Option<i64>
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SendGroupMessageParams` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OnebotRequest` is never constructed
[INFO] [stdout]  --> crates/ntrim/src/backend/onebot/api/mod.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct OnebotRequest {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `IllegalInputError` is never constructed
[INFO] [stdout]   --> crates/ntrim/src/backend/onebot/api/mod.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub enum OnebotError {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 57 |     IllegalInputError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OnebotError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `content_type_error` and `illegal_input` are never used
[INFO] [stdout]   --> crates/ntrim/src/backend/onebot/api/mod.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | impl OnebotError {
[INFO] [stdout]    | ---------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 72 |     fn content_type_error(str: &str) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     fn illegal_input(str: &str) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `recall_duration` is never read
[INFO] [stdout]   --> crates/ntrim/src/backend/onebot/api/message/send_private_msg.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct SendPrivateMessageParams {
[INFO] [stdout]    |        ------------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     recall_duration: Option<i64>
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SendPrivateMessageParams` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `recall_duration` is never read
[INFO] [stdout]   --> crates/ntrim/src/backend/onebot/api/message/send_group_msg.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct SendGroupMessageParams {
[INFO] [stdout]    |        ---------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     recall_duration: Option<i64>
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SendGroupMessageParams` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 5m 32s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: sqlx-postgres v0.7.4
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 6`
[INFO] [stderr] crater-edition-check: all finished
[INFO] running `Command { std: "docker" "inspect" "a8ad28ebb124a76c54607c55fb7dff87ae5625005a876d17f10ffe9eb22e0b6d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a8ad28ebb124a76c54607c55fb7dff87ae5625005a876d17f10ffe9eb22e0b6d", kill_on_drop: false }`
[INFO] [stdout] a8ad28ebb124a76c54607c55fb7dff87ae5625005a876d17f10ffe9eb22e0b6d
